<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript">
        window.onload=function()
        {
            console.log(a);//变量提升，a被提前创建，但是还没赋值
            var a=3;
            console.log(a);
            function fn1()
            {
                console.log(a);
                var a=4;
            }
            fn1();
            //输出undefined

            function fn2()
            {
                var a=3;
                console.log(a);
            }
            fn2();
        };
    </script>
</head>
<body>
    <!--
        1.变量声明提升
        通过var定义的变量，在定义语句之前就可以访问到
        值：undefined
        2.函数声明提升
        通过function声明的函数，在之前就可以直接调用
        值：函数定义（对象）
        3.问题：变量提升和函数提升是如何产生的
    -->
</body>
</html>